﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using iTunesLib;

namespace iTFF.WPF.Model.Lyrics
{
    interface ILyricsLocalProvider
    {

        /// <summary>
        /// Gets the provider display name
        /// </summary>
        string DisplayName { get; }

        /// <summary>
        /// Gets the lyrics from the local store
        /// </summary>
        /// <param name="track"></param>
        /// <returns></returns>
        LyricsModel GetLyrics(ulong persistentID);

        /// <summary>
        /// Saves the lyrics into the specified store
        /// </summary>
        /// <param name="track"></param>
        /// <param name="force"></param>
        /// <param name="lyrics"></param>
        /// <returns></returns>
        bool SaveLyrics(LyricsModel model, bool force);

        /// <summary>
        /// Removes the specified lyrics from the track
        /// </summary>
        /// <param name="track"></param>
        /// <returns></returns>
        bool RemoveLyrics(ulong persistentID);

        /// <summary>
        /// Indicates if lyrics for the track exist
        /// </summary>
        /// <param name="persistentID"></param>
        /// <returns></returns>
        bool LyricsExists(ulong persistentID);

        /// <summary>
        /// The lyrics metric. Lower is faster to store/save
        /// </summary>
        int Metric { get; }

        /// <summary>
        /// Determines if the lyrics are correctly configured and the navailable
        /// </summary>
        bool IsValid { get; }

        /// <summary>
        /// Indicates if the provider is currently activated
        /// </summary>
        bool IsActivated { get; set; }

    }
}
